<?php

/**
 * 印尼短信接口：支持下发短信（支持群发），可用于 找回密码，短信告警，发送活动通知等
 * https://reguler.zenziva.net/apps/api.php
 *
 */
class SMS_Zenziva extends SMS_Abstract {

    /**
     * 帐号
     *
     * */
    private $_account = '';

    /**
     * 密钥
     *
     * */
    private $_seckey = '';

    /**
     * 发送错误代码
     *
     * */
    private static $_sendError = array(
    );

    /**
     * 构造函数
     * @param <type> $option
     */
    public function __construct($option = array()) {

        if (isset($option['account'])) {
            $this->setAccount($option['account'], $option['seckey']);
        }

        parent::__construct($option);
    }

    /**
     * 设置帐号
     * @param <type> $account
     * @param <type> $seckey
     * */
    public function setAccount($account, $seckey) {

        $this->_account = $account;
        $this->_seckey = $seckey;
    }

    /**
     * 发送短信
     * @param <type> $mobile 接收手机号（可以为数组）
     * @param <type> $content
     *
     * @return 发送成功条数
     */
    public function send($mobile, $content) {

        $url = 'https://reguler.zenziva.net/apps/smsapi.php?userkey=' . $this->_account
            . '&passkey=' . $this->_seckey . '&nohp=' . $mobile . '&pesan='
            . urlencode($content);

        $res = $this->_send($url);
        $match = array();
        preg_match('/\<status\>(.*?)\<\/status\>/i', $res, $match);
        $status = intval($match[1]);
        if ($status > 0) {
            $msg = 'unknown error';
            if (preg_match('/\<text\>(.*?)\<\/text\>/i', $res, $match)) {
                $msg = trim($match[1]);
            }
            throw new SMS_Exception($msg, SMS_Exception::E_SMS_SEND_ERROR);
        }

        return true;
    }

    /**
     * 发送请求
     *
     * @param <type> $url
     * */
    public function _send($url) {

        return file_get_contents($url);
    }

}
